<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<title>FLITr: flitr::ImageConsumer Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { searchBox.OnSelectItem(0); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">FLITr
   &#160;<span id="projectnumber">1.x</span>
   </div>
   <div id="projectbrief">Framework for Live Image Transformation.</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.1.2 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classflitr_1_1_image_consumer.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&#160;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&#160;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&#160;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&#160;</span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&#160;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark">&#160;</span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark">&#160;</span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark">&#160;</span>Enumerations</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(8)"><span class="SelectionMark">&#160;</span>Enumerator</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(9)"><span class="SelectionMark">&#160;</span>Friends</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(10)"><span class="SelectionMark">&#160;</span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(11)"><span class="SelectionMark">&#160;</span>Pages</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pri-attribs">Private Attributes</a> &#124;
<a href="#friends">Friends</a> &#124;
<a href="classflitr_1_1_image_consumer-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">flitr::ImageConsumer Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p><code>#include &lt;<a class="el" href="image__consumer_8h_source.html">image_consumer.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for flitr::ImageConsumer:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer__inherit__graph.png" border="0" usemap="#flitr_1_1_image_consumer_inherit__map" alt="Inheritance graph"/></div>
<map name="flitr_1_1_image_consumer_inherit__map" id="flitr_1_1_image_consumer_inherit__map">
<area shape="rect" id="node3" href="classflitr_1_1_multi_c_p_u_histogram_consumer.html" title="{flitr::MultiCPUHistogram\lConsumer\n|&#45; ImageFormat_\l&#45; ImagesPerSlot_\l&#45; PixelStride_\l&#45; ImageStride_\l&#45; Thread_\l&#45; CalcMutexes_\l&#45; Histograms_\l&#45; HistogramUpdatedVect_\l|+ MultiCPUHistogramConsumer()\l+ ~MultiCPUHistogramConsumer()\l+ init()\l+ getNumPixels()\l+ getHistogram()\l+ isHistogramUpdated()\l+ calcHistogramIdentityMap()\l+ calcRefHistogramForEqualisation()\l+ calcHistogramMatchMap()\l+ calcHistogramStretchMap()\l}" alt="" coords="5,303,243,683"/><area shape="rect" id="node5" href="classflitr_1_1_multi_f_fmpeg_consumer.html" title="{flitr::MultiFFmpegConsumer\n|&#45; ImageFormat_\l&#45; ImagesPerSlot_\l&#45; Codec_\l&#45; BitRate_\l&#45; Container_\l&#45; Thread_\l&#45; FFmpegWriters_\l&#45; MetadataWriters_\l&#45; WritingMutex_\l&#45; Writing_\l&#45; MultiWriteStats_\l|+ MultiFFmpegConsumer()\l+ ~MultiFFmpegConsumer()\l+ setCodec()\l+ setContainer()\l+ init()\l+ openFiles()\l+ openFiles()\l+ openFiles()\l+ startWriting()\l+ stopWriting()\l+ closeFiles()\l}" alt="" coords="267,277,453,709"/><area shape="rect" id="node7" href="classflitr_1_1_t_multi_o_s_g_consumer.html" title="{flitr::TMultiOSGConsumer\&lt; T \&gt;\n|&#45; ImageFormat_\l&#45; ImagesPerSlot_\l&#45; ImagesInHistory_\l&#45; HistoryWritePos_\l&#45; OSGImages_\l&#45; Metadata_\l&#45; OutputTextures_\l&#45; DummyImages_\l&#45; BufferMutex_\l&#45; DiscardThread_\l|+ TMultiOSGConsumer()\l+ ~TMultiOSGConsumer()\l+ init()\l+ startDiscardThread()\l+ getImageMetadata()\l+ getOSGImage()\l+ getOutputTexture()\l+ getNext()\l}" alt="" coords="477,312,683,675"/><area shape="rect" id="node9" href="class_test_consumer.html" title="{TestConsumer\n||+ TestConsumer()\l+ init()\l+ reserveOne()\l+ releaseOne()\l+ TestConsumer()\l+ init()\l+ reserveOne()\l+ releaseOne()\l}" alt="" coords="707,390,835,597"/></map>
</div>
<div class="dynheader">
Collaboration diagram for flitr::ImageConsumer:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer__coll__graph.png" border="0" usemap="#flitr_1_1_image_consumer_coll__map" alt="Collaboration graph"/></div>
<map name="flitr_1_1_image_consumer_coll__map" id="flitr_1_1_image_consumer_coll__map">
<area shape="rect" id="node2" href="classflitr_1_1_image_producer.html" title="{flitr::ImageProducer\n|# ImageFormat_\l# SharedImageBuffer_\l# CreateMetadataFunction_\l|+ ImageProducer()\l+ ~ImageProducer()\l+ init()\l+ getFormat()\l+ getNumWriteSlotsAvailable()\l+ trigger()\l+ seek()\l+ getLeastNumReadSlotsAvailable()\l+ setCreateMetadataFunction()\l# releaseReadSlotCallback()\l# addConsumer()\l# reserveWriteSlot()\l# releaseWriteSlot()\l}" alt="" coords="40,5,275,333"/><area shape="rect" id="node4" href="classflitr_1_1_shared_image_buffer.html" title="Class for passing images between producers and consumers." alt="" coords="211,400,445,936"/></map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a58f2c3e5758b892ebeff2188aab0a024"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a58f2c3e5758b892ebeff2188aab0a024">ImageConsumer</a> (<a class="el" href="classflitr_1_1_image_producer.html">ImageProducer</a> &amp;producer)</td></tr>
<tr class="memitem:a3c4c0805b3365307b3083dcb346b2af4"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a3c4c0805b3365307b3083dcb346b2af4">~ImageConsumer</a> ()</td></tr>
<tr class="memitem:aa8d2103df0dac8755b1a0fdc206932f7"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#aa8d2103df0dac8755b1a0fdc206932f7">getNumReadSlotsAvailable</a> ()</td></tr>
<tr class="memitem:a17c1abc98c01ef35c6cb0b7de7cc94ef"><td class="memItemLeft" align="right" valign="top">virtual uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a17c1abc98c01ef35c6cb0b7de7cc94ef">getNumReadSlotsReserved</a> ()</td></tr>
<tr class="memitem:a384a5dbebf79677f73a53688edda4d71"><td class="memItemLeft" align="right" valign="top">virtual std::vector&lt; <a class="el" href="classflitr_1_1_image.html">Image</a> ** &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a384a5dbebf79677f73a53688edda4d71">reserveReadSlot</a> ()</td></tr>
<tr class="memitem:a7a84273411d105818dd6f1212cb78724"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a7a84273411d105818dd6f1212cb78724">releaseReadSlot</a> ()</td></tr>
<tr class="memitem:a9ad528933a705ab2bb44a388a2937f33"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a9ad528933a705ab2bb44a388a2937f33">init</a> ()</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr class="memitem:a4f800e1ab9f514f6a642c4c91165e494"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a4f800e1ab9f514f6a642c4c91165e494">setSharedImageBuffer</a> (<a class="el" href="classflitr_1_1_shared_image_buffer.html">SharedImageBuffer</a> &amp;b)</td></tr>
<tr class="memdesc:a4f800e1ab9f514f6a642c4c91165e494"><td class="mdescLeft">&#160;</td><td class="mdescRight">Called once we get added as a consumer.  <a href="#a4f800e1ab9f514f6a642c4c91165e494"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="pri-attribs"></a>
Private Attributes</h2></td></tr>
<tr class="memitem:a898bbfc4e6383e7436d091319f14c6d6"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflitr_1_1_shared_image_buffer.html">SharedImageBuffer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a898bbfc4e6383e7436d091319f14c6d6">SharedImageBuffer_</a></td></tr>
<tr class="memdesc:a898bbfc4e6383e7436d091319f14c6d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to the shared buffer. The buffer resides in the producer.  <a href="#a898bbfc4e6383e7436d091319f14c6d6"></a><br/></td></tr>
<tr class="memitem:afc3af6b57e15f83a4e3726e705922771"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classflitr_1_1_image_producer.html">ImageProducer</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#afc3af6b57e15f83a4e3726e705922771">ImageProducer_</a></td></tr>
<tr class="memdesc:afc3af6b57e15f83a4e3726e705922771"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to the producer we are connected to.  <a href="#afc3af6b57e15f83a4e3726e705922771"></a><br/></td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2><a name="friends"></a>
Friends</h2></td></tr>
<tr class="memitem:a18f6db6520dbb1db232988e6ad29e289"><td class="memItemLeft" align="right" valign="top">class&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classflitr_1_1_image_consumer.html#a18f6db6520dbb1db232988e6ad29e289">SharedImageBuffer</a></td></tr>
</table>
<a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>Base class for image consumers.</p>
<p><a class="el" href="classflitr_1_1_image_consumer.html">ImageConsumer</a> is the base class for image consumers. At construction it connects the consumer with a producer and shared buffer. </p>
</div><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a58f2c3e5758b892ebeff2188aab0a024"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">ImageConsumer::ImageConsumer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classflitr_1_1_image_producer.html">ImageProducer</a> &amp;&#160;</td>
          <td class="paramname"><em>producer</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Construct a consumer.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">producer</td><td>The producer we are connecting to. The producer's method to add a consumer is protected, and can only be called via this consumer contructor. </td></tr>
  </table>
  </dd>
</dl>

<p><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer_a58f2c3e5758b892ebeff2188aab0a024_cgraph.png" border="0" usemap="#classflitr_1_1_image_consumer_a58f2c3e5758b892ebeff2188aab0a024_cgraph" alt=""/></div>
<map name="classflitr_1_1_image_consumer_a58f2c3e5758b892ebeff2188aab0a024_cgraph" id="classflitr_1_1_image_consumer_a58f2c3e5758b892ebeff2188aab0a024_cgraph">
<area shape="rect" id="node3" href="classflitr_1_1_image_producer.html#a3e642e35715da06dc327e71c92c6e848" title="flitr::ImageProducer\l::addConsumer" alt="" coords="197,5,333,51"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a3c4c0805b3365307b3083dcb346b2af4"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual flitr::ImageConsumer::~ImageConsumer </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2>Member Function Documentation</h2>
<a class="anchor" id="aa8d2103df0dac8755b1a0fdc206932f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t flitr::ImageConsumer::getNumReadSlotsAvailable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Obtain the number of image slots that are available for reading.</p>
<dl class="section return"><dt>Returns</dt><dd>Number of slots available for reading. </dd></dl>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer_aa8d2103df0dac8755b1a0fdc206932f7_icgraph.png" border="0" usemap="#classflitr_1_1_image_consumer_aa8d2103df0dac8755b1a0fdc206932f7_icgraph" alt=""/></div>
<map name="classflitr_1_1_image_consumer_aa8d2103df0dac8755b1a0fdc206932f7_icgraph" id="classflitr_1_1_image_consumer_aa8d2103df0dac8755b1a0fdc206932f7_icgraph">
<area shape="rect" id="node3" href="classflitr_1_1_multi_o_s_g_consumer_discard_thread.html#a4b80adbb1afd4243cde3cc67978aa28e" title="flitr::MultiOSGConsumerDiscard\lThread::run" alt="" coords="245,5,456,51"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a17c1abc98c01ef35c6cb0b7de7cc94ef"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual uint32_t flitr::ImageConsumer::getNumReadSlotsReserved </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Obtain the number of slots that a consumer has reserved for reading but has not yet released.</p>
<dl class="section return"><dt>Returns</dt><dd>The number of slots reserved for reading. </dd></dl>

</div>
</div>
<a class="anchor" id="a9ad528933a705ab2bb44a388a2937f33"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool flitr::ImageConsumer::init </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Reimplemented in <a class="el" href="class_test_consumer.html#a14812802f2b3cb80c2a46646e8017154">TestConsumer</a>, <a class="el" href="classflitr_1_1_t_multi_o_s_g_consumer.html#a61f5f35814f7aa2667d04ad23722d685">flitr::TMultiOSGConsumer&lt; T &gt;</a>, <a class="el" href="classflitr_1_1_multi_f_fmpeg_consumer.html#afdac7353742e267b645056e93b017690">flitr::MultiFFmpegConsumer</a>, <a class="el" href="classflitr_1_1_multi_c_p_u_histogram_consumer.html#a9c5097cfb472e0fa4b6705a9fb0b8e84">flitr::MultiCPUHistogramConsumer</a>, and <a class="el" href="class_test_consumer.html#a14812802f2b3cb80c2a46646e8017154">TestConsumer</a>.</p>

</div>
</div>
<a class="anchor" id="a7a84273411d105818dd6f1212cb78724"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void flitr::ImageConsumer::releaseReadSlot </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Indicate that the consumer has finished with a reserved read slot. Should only be called after a slot has been reserved and once for each slot that was reserved. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer_a7a84273411d105818dd6f1212cb78724_icgraph.png" border="0" usemap="#classflitr_1_1_image_consumer_a7a84273411d105818dd6f1212cb78724_icgraph" alt=""/></div>
<map name="classflitr_1_1_image_consumer_a7a84273411d105818dd6f1212cb78724_icgraph" id="classflitr_1_1_image_consumer_a7a84273411d105818dd6f1212cb78724_icgraph">
<area shape="rect" id="node3" href="classflitr_1_1_multi_c_p_u_histogram_consumer_thread.html#acccdac29b5ca600265e885dcf22a2699" title="flitr::MultiCPUHistogram\lConsumerThread::run" alt="" coords="220,5,385,51"/><area shape="rect" id="node5" href="classflitr_1_1_multi_f_fmpeg_consumer_thread.html#ad7662f15530121ea86e2c2aa9f1954fa" title="flitr::MultiFFmpegConsumer\lThread::run" alt="" coords="211,74,395,121"/><area shape="rect" id="node7" href="classflitr_1_1_multi_o_s_g_consumer_discard_thread.html#a4b80adbb1afd4243cde3cc67978aa28e" title="flitr::MultiOSGConsumerDiscard\lThread::run" alt="" coords="197,143,408,190"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a384a5dbebf79677f73a53688edda4d71"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual std::vector&lt;<a class="el" href="classflitr_1_1_image.html">Image</a>**&gt; flitr::ImageConsumer::reserveReadSlot </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Reserve (obtain) a slot where image data has already been written. Multiple slots can be reserved before any are released.</p>
<dl class="section return"><dt>Returns</dt><dd>A vector with pointers to image pointers where data can be read from. The size would match the number of images per slot for this buffer. An empty vector if no slot could be obtained (buffer full or reader busy with all slots). </dd></dl>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer_a384a5dbebf79677f73a53688edda4d71_icgraph.png" border="0" usemap="#classflitr_1_1_image_consumer_a384a5dbebf79677f73a53688edda4d71_icgraph" alt=""/></div>
<map name="classflitr_1_1_image_consumer_a384a5dbebf79677f73a53688edda4d71_icgraph" id="classflitr_1_1_image_consumer_a384a5dbebf79677f73a53688edda4d71_icgraph">
<area shape="rect" id="node3" href="classflitr_1_1_multi_c_p_u_histogram_consumer_thread.html#acccdac29b5ca600265e885dcf22a2699" title="flitr::MultiCPUHistogram\lConsumerThread::run" alt="" coords="220,5,385,51"/><area shape="rect" id="node5" href="classflitr_1_1_multi_f_fmpeg_consumer_thread.html#ad7662f15530121ea86e2c2aa9f1954fa" title="flitr::MultiFFmpegConsumer\lThread::run" alt="" coords="211,74,395,121"/><area shape="rect" id="node7" href="classflitr_1_1_multi_o_s_g_consumer_discard_thread.html#a4b80adbb1afd4243cde3cc67978aa28e" title="flitr::MultiOSGConsumerDiscard\lThread::run" alt="" coords="197,143,408,190"/></map>
</div>
</p>

</div>
</div>
<a class="anchor" id="a4f800e1ab9f514f6a642c4c91165e494"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void flitr::ImageConsumer::setSharedImageBuffer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classflitr_1_1_shared_image_buffer.html">SharedImageBuffer</a> &amp;&#160;</td>
          <td class="paramname"><em>b</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Called once we get added as a consumer. </p>

<p><div class="dynheader">
Here is the caller graph for this function:</div>
<div class="dyncontent">
<div class="center"><img src="classflitr_1_1_image_consumer_a4f800e1ab9f514f6a642c4c91165e494_icgraph.png" border="0" usemap="#classflitr_1_1_image_consumer_a4f800e1ab9f514f6a642c4c91165e494_icgraph" alt=""/></div>
<map name="classflitr_1_1_image_consumer_a4f800e1ab9f514f6a642c4c91165e494_icgraph" id="classflitr_1_1_image_consumer_a4f800e1ab9f514f6a642c4c91165e494_icgraph">
<area shape="rect" id="node3" href="classflitr_1_1_shared_image_buffer.html#a8afe882347c328271b6314403bf158dd" title="flitr::SharedImageBuffer\l::addConsumer" alt="" coords="213,5,373,51"/></map>
</div>
</p>

</div>
</div>
<h2>Friends And Related Function Documentation</h2>
<a class="anchor" id="a18f6db6520dbb1db232988e6ad29e289"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">friend class <a class="el" href="classflitr_1_1_shared_image_buffer.html">SharedImageBuffer</a></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">friend</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

</div>
</div>
<h2>Member Data Documentation</h2>
<a class="anchor" id="afc3af6b57e15f83a4e3726e705922771"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classflitr_1_1_image_producer.html">ImageProducer</a>* flitr::ImageConsumer::ImageProducer_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Pointer to the producer we are connected to. </p>

</div>
</div>
<a class="anchor" id="a898bbfc4e6383e7436d091319f14c6d6"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classflitr_1_1_shared_image_buffer.html">SharedImageBuffer</a>* flitr::ImageConsumer::SharedImageBuffer_</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">private</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Pointer to the shared buffer. The buffer resides in the producer. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li>include/flitr/<a class="el" href="image__consumer_8h_source.html">image_consumer.h</a></li>
<li>src/flitr/<a class="el" href="image__consumer_8cpp.html">image_consumer.cpp</a></li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><a class="el" href="namespaceflitr.html">flitr</a></li><li class="navelem"><a class="el" href="classflitr_1_1_image_consumer.html">ImageConsumer</a></li>
    <li class="footer">Generated on Thu Dec 6 2012 09:15:45 for FLITr by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.1.2 </li>
  </ul>
</div>
</body>
</html>
